数学建模代码实战训练 | 您所在的位置:网站首页 › 线性规划建模求解 实验报告 › 数学建模代码实战训练 |
作者:祁彬彬、马良 本篇问题引自《数学模型(第五版)》> 序本篇文章主要讲解很多教材在开篇时,都会介绍的一个线性规划求解的简单实例——奶制品加工生产计划获利的代码,但它出现在我们关于建模文章系列的开篇位置,其承担的任务有所不同,因为写出代码方案不再是目标,而是手段。我们关注的是,通过多种求解代码方案,几个非常关键的问题应当在这个系列刚开始的时候就得到部分回答: Lingo作为早期数学建模中的应知必会软件,其模型搭建与求解机制是怎样的?为什么早期版本的MATLAB在优化问题求解时无法代替Lingo?为什么新版本MATLAB又具备了走向建模舞台中央,彻底取代Lingo的资格和条件?这几个问题,尤其第3个,兼具头条系的帅气,和UC震惊部的沧桑,究竟是博眼球?还是确有资格?可能需要一个比较漫长的论证和测试,并伴随大量问题实例以及对应的代码求解方案。 那么从这篇文章开始,我们可能就要开始这个探讨过程,这篇文章主要有如下内容: 用Lingo软件求解该优化模型;分析总结Lingo代码中,有关优化模型求解时对应的基本要素与机制;利用Yalmip求解同一问题的模型构造与求解方法;利用MATLAB求解同一问题,其对应Lingo不同模块位置的命令函数以及相应的代码编写方法;设置MATLAB调用Gurobi求解问题的代码方案与步骤。通过对这个示例的剖析,达到如下目标: 解释Lingo模型搭建与求解机制以及新版MATLAB中,对应的等效代码流程;通过比较几种方式求解同一规划问题的代码,感受MATLAB基于问题和基于求解器两类求解代码的编写方式差异;了解MATLAB调用Gurobi求解同一模型的方法,以及如何在代码中指定调用MATLAB官方命令或者Gurobi同名函数求解模型;利用Yalmip建模并求解(调用Gurobi)的方式;题目一奶制品加工厂用牛奶生产 获利最大的决策是生产计划,每天多少桶牛奶用来各自生产 约束条件明细: 原料供应:生产总量所需牛奶上限需满足
从优化模型的几个要素,以及数学模型表达式,很容易看出牛奶加工问题属于简单线性规划模型求解,这种优化模型任何市面所见的优化软件都不会有求解难度,且每一条约束和目标函数都容易理解,后续分析的重心放在代码的流程结构上。 代码Lingo与MATLAB求解器求解模型方式分析比较Lingo求解优化问题的机制一般优化问题从模型搭建到求解,要经历下面的过程。 需要强调的是,建模语言进入求解器之前,总归要被转换为矩阵形式输入的,但Lingo却中间两个环节做了整合化的处理,不妨看看Lingo是如何求解奶制品加工厂这个简单LP例子的: max = 72*x1+64*x2; x1+x2 |
CopyRight 2018-2019 实验室设备网 版权所有 |